package com.medusa.aps.business.modules.demand.model.input;

import com.medusa.aps.business.model.constant.RegexPool;
import com.medusa.aps.business.model.enums.SchedulingStatusEnum;
import com.medusa.aps.business.model.pagination.Page;
import com.medusa.aps.business.modules.demand.model.output.OrderInfoPageListModel;
import com.medusa.aps.business.global.model.o.RangeDate;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Pattern;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.util.Set;

/**
 * 订单分页查询
 *
 * @author shenzhiwei
 */
@Getter
@Setter
@ToString
@Schema(description = "列表查询条件实体对象")
public class OrderPageQuery extends Page<OrderInfoPageListModel> {

    /**
     * 订单号
     */
    @Schema(description = "订单号")
    @Pattern(regexp = RegexPool.NOT_CONTAIN_BLANK, message = "订单号不能包含空格")
    private String orderNumber;

    /**
     * 物料编码
     */
    @Schema(description = "物料编码")
    @Pattern(regexp = RegexPool.NOT_CONTAIN_BLANK, message = "物料编码不能包含空格")
    private String itemCode;

    /**
     * 物料名称
     */
    @Schema(description = "物料名称")
    private String itemName;

    /**
     * 客户名称
     */
    @Schema(description = "客户公司名称")
    private String customerCompanyName;

    /**
     * 客户编码
     */
    @Schema(description = "客户编码")
    private String customerCode;

    /**
     * 下单日期
     */
    @Schema(description = "下单日期")
    private RangeDate orderDate;

    /**
     * 创建人
     */
    @Schema(description = "创建人")
    private String creator;

    /**
     * 订单交期
     */
    @Schema(description = "订单交期")
    private RangeDate orderDeliveryDate;

    /**
     * 创建时间
     */
    @Schema(description = "创建时间")
    private RangeDate createTime;

    /**
     * 排产状态
     */
    @Schema(description = "排产状态")
    private SchedulingStatusEnum schedulingStatus;


    /**
     * 主键集合
     */
    @Schema(description = "主键集合")
    private Set<Long> ids;
}
